library(nycflights13)
library(tidyverse)

Exercício 1: Limpando Dados

Crie uma data completa numa variável única, com o formato “day-month-year”.

flights %>% unite("day-month-year", c("day", "month", "year"), sep = "-")

Divide a variável time_hour em duas; uma variável de time e a outra variável de hour.

flights %>% separate(time_hour, c("time", "hour"), sep = " " )

Recodifique a variável dep_delay para uma variável binário, que seja 1 quando tem atraso, e 0 quando não tem atraso (valores negativos significam decolagens antes do horário previsto).

flights %>% mutate(atraso = case_when(dep_delay > 0 ~ TRUE,
                                      TRUE ~ FALSE))

A companhia aérea US Airways (código ‘US’) se fundiu com American Airlines (código ‘AA’) em 2015. Recodifique voos de US Airways como voos de American Airlines.

flights %>% mutate(new_carrier = case_when(year >= 2015 & carrier == "US" ~ "AA",
                                          TRUE ~ carrier))

Exercício 2: Ordenação

Use de novo o banco de dados flights:

Ordene o banco de dados de menor a maior duração (air_time), incluindo apenas os voos com destino de Anchorage (ANC).

flights %>% filter(dest == "ANC") %>% arrange(air_time)

Identifique o voo mais atrasado (dep_delay) entre LaGuardia (LGA) e Atlanta (ATL). Quão atrasado foi o voo?

voo_atrasado <- flights %>% 
  filter(origin == "LGA" & dest == "ATL") %>% 
  arrange(desc(dep_delay)) %>% 
  slice(1)

atraso <- round(voo_atrasado$dep_delay / 60) # transforma em minutos

O voo atrasou aproximadamente 15 horas para a decolagem.

Calcule a velocidade de cada voo, e selecione os três voos mais rápidos. Eles voaram de qual aeroporto para qual destino?

flights %>% 
  mutate(velocidade = distance/ air_time) %>% 
  arrange(-velocidade) %>% 
  top_n(3) %>% 
  select(origin, dest)

Para os voos com destino de Anchorage (ANC), verifique que eles são ordenados cronologicamente (por year, month, day, e dep_time) e gera uma nova variável com a duração (air_time) do voo anterior. Agora, compare a duração de cada voo com a duração do voo anterior.

flights %>% filter(dest == "ANC") %>% 
  arrange(year, month, day, dep_time) %>% 
    mutate(air_time_anterior = lag(air_time),
         air_time_diferenca = air_time - air_time_anterior)

Exercício 3: Factors

Usando os dados de flights de novo:

Transforme a variável origin para um factor (não-ordenado).

ex1 <- flights %>% mutate(origin = as_factor(origin))

levels(ex1$origin)
## [1] "EWR" "LGA" "JFK"

Salve o resultado de (1) e tente-se usar o novo banco de dados para recodificar o aeroporto de origem “EWR” para “Newark” usando case_when dentro de mutate. É possível?

#ex1 %>% mutate(origin2 = case_when(origin == "EWR" ~ "Newarl", TRUE ~ origin))

# Erro: must be a character vector, not a `factor` object

Não é possível.

Usando as funções dedicadas do pacote forcats, recodifique o factor origin para os nomes completos dos aeroportos (Newark, John F Kennedy e LaGuardia).

ex1 %>% mutate(origin_completa = fct_recode(origin,
  "Newark" = "EWR", 
  "John F Kennedy" = "JFK",
  "LaGuardia" = "LGA"
))

Transforme a variável month para um factor ordenado.

meses <- flights %>% mutate(month = as_factor(month))

meses
levels(meses$month)
##  [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12"